# 自定义文件存储类

from django.core.files.storage import Storage
from django.conf import settings

class FastDFSStorage(Storage):
    """自定义文件存储类,提供图片下载的全路径"""

    def __init__(self,fdfs_base_url=None):
        """初始化文件存储对象的构造方法:方便外界传入参数
        我希望当在创建文件存储对象时，外界可以传入文件存储服务器的位置，如果没有传入我就从配置文件中读取
        """
        # if not fdfs_base_url:
        #     self.fdfs_base_url = settings.CUSTOM_STORAGE_OPTIONS
        # 简化写法
        # 如果fdfs_base_url有值，就取出来赋值给self.fdfs_base_url。反之，就读取settings.FDFS_BASE_URL赋值给self.fdfs_base_url
        self.fdfs_base_url = fdfs_base_url or settings.FDFS_BASE_URL

    def _open(self,name,mode="rb"):
        """
        用来打开文件的,但是当前不需要打开文件,但是又不许实现,所以pass
        :param name: 要打开的文件名
        :param mode: 要打开文件的方式
        :return: file object
        """
        pass

    def _save(self,name,content):
        """
        用来保存文件的,但是当前不需要保存文件,但是又必须实现,所以pass
        :param name: 要保存的文件名
        :param content: 要保存的文件内容
        :return:  None
        """
        pass

    def url(self,name):
        """
            向外界提供文件全路径的方法
            :param name: 文件名 group1/M00/00/00/wKhn3V4YkcWAaIZyAACJkifT0n075.jpeg
            :return: 文件全路径 http://192.168.184.183:8888/group1/M00/00/00/wKhn3V4YkcWAaIZyAACJkifT0n075.jpeg
            """
        # return 'http://192.168.184.183:8888/' + name
        # return settings.FDFS_BASE_URL + name
        return self.fdfs_base_url + name


    # 判断图片是否存在
    # FastDFS可以处理重名的问题,避免图片重复
    def exists(self, name):
        return False

"""
    raise NotImplementedError('subclasses of Storage must provide an exists() method')
NotImplementedError: subclasses of Storage must provide an exists() method
"""



